package com.csun.cmny.provider.service;

import com.csun.cmny.base.dto.LoginAuthDto;
import com.csun.cmny.core.support.IService;
import com.csun.cmny.provider.model.domain.DmcCsunDoorLocation;
import com.csun.cmny.provider.model.dto.button.BindCsunButtonLocationDto;
import com.csun.cmny.provider.model.dto.csundoor.BindCsunDoorLocationDto;
import com.csun.cmny.provider.model.dto.csundoor.CsunDoorPageQuery;
import com.csun.cmny.provider.model.dto.propertyManagement.SelectDeviceDataDto;
import com.csun.cmny.provider.model.vo.csundoor.DmcCsunDoorVo;
import com.csun.cmny.provider.model.vo.propertyManagement.PropertyDataVo;
import com.github.pagehelper.PageInfo;

import java.util.List;

/**
 * @Auther: chisj chisj@foxmal.com
 * @Date: 2020-06-18 10:00
 * @Description:
 */
public interface DmcCsunDoorLocationService extends IService<DmcCsunDoorLocation> {

    /**
     * break csun button location
     *
     * @param deviceId  device id
     *
     * @return  the int.
     */
    Integer breakCsunDoorLocation(Long deviceId);

    /**
     * query csun door list with page
     *
     * @param csunDoorPageQuery   csun door page query
     *
     * @return  thee info.
     */
    PageInfo queryGroupCsunDoorListWithPage(CsunDoorPageQuery csunDoorPageQuery);

    /**
     * get csun door by device id
     *
     * @param deviceId  device id
     *
     * @return  dmc csun door vo
     */
    DmcCsunDoorVo getCsunDoorByDeviceId(Long deviceId);

    /**
     * get csun door by device id
     *
     * @param deviceNo  device no
     *
     * @return  dmc csun door vo
     */
    DmcCsunDoorVo getCsunDoorByDeviceNo(String deviceNo);

    /**
     * delete csun door by id
     *
     * @param id    the id
     *
     * @return  the int.
     */
    Integer deleteCsunDoorById(Long id);

    /**
     * bind csun door location
     *
     * @param bindCsunDoorLocationDto
     * @param loginAuthDto
     *
     * @return
     */
    Integer bindCsunDoorLocation(BindCsunDoorLocationDto bindCsunDoorLocationDto, LoginAuthDto loginAuthDto);

    List<PropertyDataVo> selectDeviceData(SelectDeviceDataDto selectDeviceDataDto);
}
